package com.marvels.approve.manager.service;

import java.util.Map;

import com.marvels.approve.manager.dto.ActivitiNodeDTO;
import com.marvels.approve.manager.dto.CaseManagerDTO;
import com.marvels.approve.process.dto.CompleteProcessDTO;
import com.marvels.common.exception.MarvelsBusinessException;

public interface IActivityLoadingService {
	
	/**加载流程定义
	 * @param filePath
	 * @throws MarvelsBusinessException
	 */
	public void loadProcessFile(String filePath)throws MarvelsBusinessException;
	
	/**获取流程
	 * @author 何杰
	 * 2018年4月14日
	 * @param actKey
	 * @param useId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public String findProcess(String actKey,String useId)throws MarvelsBusinessException;
	
	/**获取流程定义所有节点
	 * @author 何杰
	 * 2018年4月14日
	 * @param actKey
	 * @throws MarvelsBusinessException
	 */
	public java.util.Collection<org.activiti.bpmn.model.FlowElement> findFlowElements(String actKey)throws MarvelsBusinessException;
	
	/**查询woStart下一个节点
	 * @author 何杰
	 * 2018年4月16日
	 * @param caseManager
	 * @return
	 */
	public String getFirstNodes(CaseManagerDTO caseManager) throws MarvelsBusinessException;
	
	/**通过流程ID开启实例
	 * @author 何杰
	 * 2018年5月14日
	 * @param processDefinitionKey
	 * @return String 实例ID 
	 * @throws MarvelsBusinessException
	 */
	public ActivitiNodeDTO startProcessInstanceByKey(String processDefinitionKey) throws MarvelsBusinessException;
	
	/**完成当前任务
	 * @author 何杰
	 * 2018年5月14日
	 * @param taskId
	 * @throws MarvelsBusinessException
	 */
	public void completeTask(CompleteProcessDTO taskDto) throws MarvelsBusinessException;
	
	/**通过taskid获取参数
	 * @param taskId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map getVariables(String taskId)throws MarvelsBusinessException;
}
